/******************************************************************************
 *  _____     _____
 *  \  __\    \  __\
 *   \ \_\\    \ \_\\
 *    \  __\SS  \  __\roject
 *     \_\       \_\
 *
 * Mateusz Maciąg, Rafał Urbański
 * Komputerowe Systemy Sterowania
 *****************************************************************************/

#ifndef PIDCONTROLLERDESIGNER_H
#define PIDCONTROLLERDESIGNER_H

#include "UI/ControllerDesigner.h"
#include "SimInterface/IConfigurable.h"

namespace Ui {
class PIDControllerDesigner;
}

class PIDControllerDesigner : public ControllerDesigner
{
    Q_OBJECT
    
public:
    explicit PIDControllerDesigner(QWidget *parent = 0);
    ~PIDControllerDesigner();
    
    /**
        Wiąże obiekt regulatora z tym widgetem.
        Zadaniem klasy implementującej jest odświeżenie interfejsu użytkownika
        po dołączeniu regulatora, tak by przedstawiał faktyczne nastawy.
    */
    void attachController(RafMat::SimInterface::IConfigurableSPtr ctrl);

    /**
        Zatwierdza zmiany regulatora.
        Metoda wywoływana po wciśnięciu odpowiedniego przycisku zatwierdzającego zmiany.
    */
    void applySettings();

private:
    Ui::PIDControllerDesigner *ui;

    RafMat::SimInterface::IConfigurableSPtr m_controllerConf;
};

#endif // PIDCONTROLLERDESIGNER_H
